//
//  RSTabBar.m
//  RSTabBar
//
//  Created by thinkjoy on 2017/8/7.
//  Copyright © 2017年 杜瑞胜. All rights reserved.
//

#import "RSTabBar.h"
#import "UIButton+SSEdgeInsets.h"

@interface RSTabBar ()

@property (nonatomic, strong) UIButton * centerButt;

@property   (nonatomic,assign)  CGFloat  KWinW;
@property   (nonatomic,assign)  CGFloat  item_W;

@end

@implementation RSTabBar

-(instancetype)initWithFrame:(CGRect)frame{
    
    if (self = [super initWithFrame:frame]){
        
        _KWinW  =   ([[UIScreen mainScreen] bounds].size.width);
        _item_W =   _KWinW/5;
        
        //初始化按钮
        _centerButt =   [[UIButton alloc] init];
        [_centerButt addTarget:self action:@selector(clickCenterButt) forControlEvents:UIControlEventTouchUpInside];
        [self addSubview:_centerButt];
        
        //设置图片
        [_centerButt setImage:[UIImage imageNamed:@"ic_nav_add"] forState:UIControlStateNormal];
        [_centerButt setImage:[UIImage imageNamed:@"ic_nav_add_actived"] forState:UIControlStateHighlighted];
        
        //设置文字
        [_centerButt setTitle:@"弹一弹" forState:UIControlStateNormal];
        _centerButt.titleLabel.font = [UIFont systemFontOfSize:10];
        _centerButt.adjustsImageWhenHighlighted = NO;
        _centerButt.frame   =   CGRectMake(0, 0, _item_W, 70);
        _centerButt.center  =   CGPointMake(_KWinW/2.f, 12);
        [_centerButt setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];
        [_centerButt setImagePositionWithType:SSImagePositionTypeTop spacing:5];
        
        //TabbBar的背景色
        self.backgroundColor = [UIColor colorWithRed:230.0/255.0 green:230.0/255.0 blue:230.0/255.0 alpha:1];
        //去掉TabBar的分割线
        [self setBackgroundImage:[UIImage new]];
        [self setShadowImage:[UIImage new]];
    }
    return self;
}

- (void)clickCenterButt
{
    if (self.clickCenterButtBlock) {
        self.clickCenterButtBlock();
    }
}

- (void)layoutSubviews {
    [super layoutSubviews];
    // 其他位置按钮
    NSUInteger count = self.subviews.count;
    for (NSUInteger i = 0 , j = 0; i < count; i++) {
        UIView *view = self.subviews[i];
        Class class = NSClassFromString(@"UITabBarButton");
        if ([view isKindOfClass:class]) {
            CGRect rect = CGRectMake(_KWinW*j/5.0, view.frame.origin.y, _item_W, view.frame.size.height);
            view.frame  =   rect;
            j++;
            if (j == 2) {
                j++;
            }
        }
    }
}

//重写hitTest方法，去监听发布按钮的点击，目的是为了让凸出的部分点击也有反应
- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event {
    
    //这一个判断是关键，不判断的话push到其他页面，点击发布按钮的位置也是会有反应的，这样就不好了
    //self.isHidden == NO 说明当前页面是有tabbar的，那么肯定是在导航控制器的根控制器页面
    //在导航控制器根控制器页面，那么我们就需要判断手指点击的位置是否在发布按钮身上
    //是的话让发布按钮自己处理点击事件，不是的话让系统去处理点击事件就可以了
    if (self.isHidden == NO) {
        
        //将当前tabbar的触摸点转换坐标系，转换到发布按钮的身上，生成一个新的点
        CGPoint newP = [self convertPoint:point toView:self.centerButt];
        
        //判断如果这个新的点是在发布按钮身上，那么处理点击事件最合适的view就是发布按钮
        if ( [self.centerButt pointInside:newP withEvent:event]) {
            return self.centerButt;
        }else{//如果点不在发布按钮身上，直接让系统处理就可以了
            
            return [super hitTest:point withEvent:event];
        }
    }
    
    else {//tabbar隐藏了，那么说明已经push到其他的页面了，这个时候还是让系统去判断最合适的view处理就好了
        
        return [super hitTest:point withEvent:event];
    }
}

//重写hitTest方法，去监听发布按钮的点击，目的是为了让凸出的部分点击也有反应


@end
